package com.yunxin.admin.system.infra.common.enums;

import com.yunxin.common.result.IResultCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * @author zero°
 * @since 2023-05-31
 */
@Getter
@RequiredArgsConstructor
public enum AdminResultCode implements IResultCode {

    /**
     * 系统执行出错
     */
    SYSTEM_EXECUTION_ERROR("B0001", "系统执行出错"),
    /**
     * 用户商户配置错误
     */
    USER_MERCHANT_ERROR("A0801", "用户商户配置错异常"),
    /**
     * 操作用户商户账号信息异常
     */
    USER_MERCHANT_OPERATE_ERROR("A0802", "操作用户商户账号信息异常"),
    /**
     * 用户商户权限异常
     */
    USER_MERCHANT_ROLE_ERROR("A0803", "权限异常,只能商户管理员操作"),

    /**
     * 商户管理员和团队管理员权限
     */
    ADMIN_MERCHANT_ROLE_ERROR("A0803", "权限异常,只能商户管理员操作或团队管理员操作"),
    /**
     * 用户商户管理员权限配置错误
     */
    MERCHANT_ADMIN_ROLE_ERROR("A0804", "用户权限配置异常,商户管理员只能配置商户管理员权限"),
    /**
     * 用户商户管理员配置错误
     */
    MERCHANT_ADMIN_ERROR("A0805", "用户权限配置异常,商户管理员必须配置对应商户"),

    /**
     * 用户商户配置错误
     */
    USER_ROLE_MERCHANT_ERROR("A0806", "用户商户配置错误,非商户管理员不可配置商户"),

    /**
     * 用户商户变更错误
     */
    USER_CHANGE_MERCHANT_ERROR("A0806", "用户商户变更错误,用户已关联对应商户，无法变更其他商户"),

    /**
     * 用户商户用户角色变更错误
     */
    USER_MERCHANT_USER_ROLE_CHANGE_ERROR("A0807", "用户商户变更错误,用户拥有商户用户角色，无法变更其他角色"),

    /**
     * 参数校验失败
     */
    PARAM_ERROR("A0999", "参数校验失败,必填参数不能为空"),
    ;

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    private final String code;
    private final String msg;

    @Override
    public String toString() {
        return "{" +
                "\"code\":\"" + code + '\"' +
                ", \"msg\":\"" + msg + '\"' +
                '}';
    }


    public static AdminResultCode getValue(String code) {
        for (AdminResultCode value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        // 默认系统执行错误
        return SYSTEM_EXECUTION_ERROR;
    }

}
